Выражения

Выражение – это комбинация объектов процедурного языка, называемых операндами выражения. В качестве операндов могут выступать переменные, значения переданных параметров, отдельные поля структуры литерала, стандартные функции или другие, более простые выражения. Операнды объединяются в выражение при помощи арифметических и логических операторов, а также операторов отношения.

Действия над операндами при вычислении значения выражения выполняются согласно приоритету операций.

Порядок выполнения операций внутри выражения может быть изменен при помощи круглых скобок.

Для наглядности любое выражение может быть заключено в фигурные скобки (символы «{ }») и так включаться в другие выражения. Последовательность выражений, разделенных точкой с запятой (символ «;»), также может рассматриваться как выражение. В этой последовательности значения всех подвыражений вычисляются последовательно слева направо, а результатом всего выражения считается результат последнего подвыражения.

Имеется специальный синтаксис условного выражения (не путать с условным оператором!), значением которого может быть значение одного из двух подвыражений в зависимости от значения третьего подвыражения логического типа (условия).

Выражения различаются по типам, в зависимости от типа результата. Типы выражений соответствуют типам, обрабатываемым в хранимых процедурах. Исключением являются курсоры. Разрешается лишь присвоение одной курсорной переменной другой.

По умолчанию целочисленные литералы имеют тип SMALLINT, поэтому при использовании их в выражениях возможно переполнение результата выражения (например, такого, как 2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2). Чтобы результат выражения формировался правильно, необходимо явно указать тип литерала при помощи суффикса (достаточно для одного операнда выражения). Тип результата будет всегда приводиться к большей размерности (например, 2*2i*2*2, 2*2i*2*2b).

Примечание

В текущей версии СУБД ЛИНТЕР присвоение курсорных переменных не реализовано и не дает никакого эффекта.

Если при вычислении выражения происходит попытка деления на ноль, генерируется исключение DIVZERO, а результатом деления считается NULL.

Максимальная длина результата символьного или байтового выражения – 3910 символов (байтов) (для выражений типа UNICODE – 1955 байтов).